{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import os\n",
    "import sys\n",
    "from tqdm.notebook import tqdm\n",
    "sys.path.append(r'D:\\codeproject\\data-process')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "#新建一个试验记录的文件列表\n",
    "files_record=pd.DataFrame()\n",
    "subject_path=r'D:\\学习&科研\\华为手表项目\\华为数据\\subject'\n",
    "#需要在handing中同步修改\n",
    "deal_path=r'D:\\学习&科研\\华为手表项目\\华为数据\\dealx'\n",
    "test_record_df=pd.read_csv(r'D:\\学习&科研\\华为手表项目\\华为数据\\base-data\\室内试验数据utf8.csv')\n",
    "laandmaxhr=pd.read_csv(r'D:\\学习&科研\\华为手表项目\\华为数据\\base_data\\Processed_summary_Mod(1).csv')\n",
    "test_record_df = pd.merge(test_record_df, laandmaxhr, left_on='number', right_on='ID', how='left')\n",
    "del test_record_df['ID']\n",
    "del test_record_df['Gender']\n",
    "del test_record_df['HR_max']\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "typelist = ['ecg', 'rrdata', 'singledetail', 'singlework', 'rri', 'ppg']\n",
    "\n",
    "files_record['number']=test_record_df['number']\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "0d5e1c1ab3c2480da0bcd6bed73757f9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "subject的文件路径获取:   0%|          | 0/138 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "def get_subject_filepath(row):\n",
    "    # 获取匹配的文件夹路径\n",
    "    matching_folders = [\n",
    "        os.path.join(subject_path, folder)\n",
    "        for folder in os.listdir(subject_path)\n",
    "        if os.path.isdir(os.path.join(subject_path, folder)) and row['number'][:4] in folder\n",
    "    ]\n",
    "\n",
    "    # 需要匹配的类型列表\n",
    "    \n",
    "\n",
    "    # 创建一个字典来存储每种类型对应的文件路径列表\n",
    "    type_files = {t: [] for t in typelist}\n",
    "\n",
    "    for folder in matching_folders:\n",
    "        for file in os.listdir(folder):\n",
    "            file_path = os.path.join(folder, file)\n",
    "            # 检查文件名是否包含 row['number'] 和每种类型的关键字\n",
    "            if os.path.isfile(file_path) and row['number'] in file:\n",
    "                for t in typelist:\n",
    "                    if t in file:\n",
    "                        type_files[t].append(file_path)\n",
    "                        break  # 匹配到一个类型后跳出当前类型循环，防止重复加入\n",
    "\n",
    "    # 返回字典，键为类型，值为文件路径列表\n",
    "    return type_files\n",
    "\n",
    "\n",
    "# 获取每种类型的文件路径\n",
    "tqdm.pandas(desc='subject的文件路径获取')\n",
    "files_record = files_record.join(\n",
    "    files_record.progress_apply(lambda row: pd.Series(get_subject_filepath(row)), axis=1)\n",
    ")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "84cc46e5c1424cfa9e64d38a915545f3",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "deal:   0%|          | 0/138 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "未定义处理函数 1001\n",
      "未定义处理函数 1001\n",
      "未定义处理函数 1001\n",
      "未定义处理函数 1001\n",
      "未定义处理函数 1001\n",
      "未定义处理函数 1002\n",
      "未定义处理函数 1002\n",
      "未定义处理函数 1002\n",
      "未定义处理函数 1002\n",
      "未定义处理函数 1002\n",
      "未定义处理函数 1002\n",
      "未定义处理函数 1003\n",
      "未定义处理函数 1003\n",
      "未定义处理函数 1003\n",
      "未定义处理函数 1003\n",
      "未定义处理函数 1003\n",
      "未定义处理函数 1003\n",
      "未定义处理函数 1004\n",
      "未定义处理函数 1004\n",
      "未定义处理函数 1004\n",
      "未定义处理函数 1004\n",
      "未定义处理函数 1004\n",
      "未定义处理函数 1004\n",
      "未定义处理函数 1005\n",
      "未定义处理函数 1005\n",
      "未定义处理函数 1005\n",
      "未定义处理函数 1005\n",
      "未定义处理函数 1005\n",
      "未定义处理函数 1005\n",
      "未定义处理函数 1006\n",
      "未定义处理函数 1006\n",
      "未定义处理函数 1006\n",
      "未定义处理函数 1006\n",
      "未定义处理函数 1006\n",
      "未定义处理函数 1006\n",
      "未定义处理函数 1007\n",
      "未定义处理函数 1007\n",
      "未定义处理函数 1007\n",
      "未定义处理函数 1007\n",
      "未定义处理函数 1007\n",
      "未定义处理函数 1007\n",
      "未定义处理函数 1008\n",
      "未定义处理函数 1008\n",
      "未定义处理函数 1008\n",
      "未定义处理函数 1008\n",
      "未定义处理函数 1008\n",
      "未定义处理函数 1008\n",
      "未定义处理函数 1009\n",
      "未定义处理函数 1009\n",
      "未定义处理函数 1009\n",
      "未定义处理函数 1009\n",
      "未定义处理函数 1009\n",
      "未定义处理函数 1009\n",
      "未定义处理函数 1010\n",
      "未定义处理函数 1010\n",
      "未定义处理函数 1010\n",
      "未定义处理函数 1010\n",
      "未定义处理函数 1010\n",
      "未定义处理函数 1010\n",
      "未定义处理函数 1011\n",
      "未定义处理函数 1011\n",
      "未定义处理函数 1011\n",
      "未定义处理函数 1011\n",
      "未定义处理函数 1011\n",
      "未定义处理函数 1011\n",
      "未定义处理函数 1012\n",
      "未定义处理函数 1012\n",
      "未定义处理函数 1012\n",
      "未定义处理函数 1012\n",
      "未定义处理函数 1012\n",
      "未定义处理函数 1012\n",
      "未定义处理函数 1013\n",
      "未定义处理函数 1013\n",
      "未定义处理函数 1013\n",
      "未定义处理函数 1013\n",
      "未定义处理函数 1013\n",
      "未定义处理函数 1013\n",
      "未定义处理函数 1014\n",
      "未定义处理函数 1014\n",
      "未定义处理函数 1014\n",
      "未定义处理函数 1014\n",
      "未定义处理函数 1014\n",
      "未定义处理函数 1014\n",
      "未定义处理函数 1015\n",
      "未定义处理函数 1015\n",
      "未定义处理函数 1015\n",
      "未定义处理函数 1015\n",
      "未定义处理函数 1015\n",
      "未定义处理函数 1015\n",
      "未定义处理函数 1016\n",
      "未定义处理函数 1016\n",
      "未定义处理函数 1016\n",
      "未定义处理函数 1016\n",
      "未定义处理函数 1016\n",
      "未定义处理函数 1016\n",
      "未定义处理函数 1017\n",
      "未定义处理函数 1017\n",
      "未定义处理函数 1017\n",
      "未定义处理函数 1017\n",
      "未定义处理函数 1017\n",
      "未定义处理函数 1017\n",
      "未定义处理函数 1018\n",
      "未定义处理函数 1018\n",
      "未定义处理函数 1018\n",
      "未定义处理函数 1018\n",
      "未定义处理函数 1018\n",
      "未定义处理函数 1018\n",
      "未定义处理函数 1019\n",
      "未定义处理函数 1019\n",
      "未定义处理函数 1019\n",
      "未定义处理函数 1019\n",
      "未定义处理函数 1019\n",
      "未定义处理函数 1019\n",
      "未定义处理函数 1020\n",
      "未定义处理函数 1020\n",
      "未定义处理函数 1020\n",
      "未定义处理函数 1020\n",
      "未定义处理函数 1020\n",
      "未定义处理函数 1020\n",
      "未定义处理函数 1021\n",
      "未定义处理函数 1021\n",
      "未定义处理函数 1021\n",
      "未定义处理函数 1021\n",
      "未定义处理函数 1021\n",
      "未定义处理函数 1021\n",
      "未定义处理函数 1022\n",
      "未定义处理函数 1022\n",
      "未定义处理函数 1022\n",
      "未定义处理函数 1022\n",
      "未定义处理函数 1022\n",
      "未定义处理函数 1022\n",
      "未定义处理函数 1023\n",
      "未定义处理函数 1023\n",
      "未定义处理函数 1023\n",
      "未定义处理函数 1023\n",
      "未定义处理函数 1023\n",
      "未定义处理函数 1023\n",
      "未定义处理函数 1024\n",
      "未定义处理函数 1024\n",
      "未定义处理函数 1024\n",
      "未定义处理函数 1024\n",
      "未定义处理函数 1024\n",
      "未定义处理函数 1024\n",
      "未定义处理函数 1025\n",
      "未定义处理函数 1025\n",
      "未定义处理函数 1025\n",
      "未定义处理函数 1025\n",
      "未定义处理函数 1025\n",
      "未定义处理函数 1025\n",
      "未定义处理函数 1026\n",
      "未定义处理函数 1026\n",
      "未定义处理函数 1026\n",
      "未定义处理函数 1026\n",
      "未定义处理函数 1026\n",
      "未定义处理函数 1026\n",
      "未定义处理函数 1027\n",
      "未定义处理函数 1027\n",
      "未定义处理函数 1027\n",
      "未定义处理函数 1027\n",
      "未定义处理函数 1027\n",
      "未定义处理函数 1027\n",
      "未定义处理函数 1028\n",
      "未定义处理函数 1028\n",
      "未定义处理函数 1028\n",
      "未定义处理函数 1028\n",
      "未定义处理函数 1028\n",
      "未定义处理函数 1028\n",
      "未定义处理函数 1029\n",
      "未定义处理函数 1029\n",
      "未定义处理函数 1029\n",
      "未定义处理函数 1029\n",
      "未定义处理函数 1029\n",
      "未定义处理函数 1029\n",
      "未定义处理函数 1030\n",
      "未定义处理函数 1030\n",
      "未定义处理函数 1030\n",
      "未定义处理函数 1030\n",
      "未定义处理函数 1030\n",
      "未定义处理函数 1030\n",
      "未定义处理函数 1031\n",
      "未定义处理函数 1031\n",
      "未定义处理函数 1031\n",
      "未定义处理函数 1031\n",
      "未定义处理函数 1031\n",
      "未定义处理函数 1031\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1032\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1034\n",
      "未定义处理函数 1034\n",
      "未定义处理函数 1034\n",
      "未定义处理函数 1034\n",
      "未定义处理函数 1034\n",
      "未定义处理函数 1034\n",
      "未定义处理函数 1035\n",
      "未定义处理函数 1035\n",
      "未定义处理函数 1035\n",
      "未定义处理函数 1035\n",
      "未定义处理函数 1035\n",
      "未定义处理函数 1035\n",
      "未定义处理函数 1036\n",
      "未定义处理函数 1036\n",
      "未定义处理函数 1036\n",
      "未定义处理函数 1036\n",
      "未定义处理函数 1036\n",
      "未定义处理函数 1036\n",
      "未定义处理函数 1037\n",
      "未定义处理函数 1037\n",
      "未定义处理函数 1037\n",
      "未定义处理函数 1037\n",
      "未定义处理函数 1037\n",
      "未定义处理函数 1037\n",
      "未定义处理函数 1038\n",
      "未定义处理函数 1038\n",
      "未定义处理函数 1038\n",
      "未定义处理函数 1038\n",
      "未定义处理函数 1038\n",
      "未定义处理函数 1038\n",
      "未定义处理函数 1039\n",
      "未定义处理函数 1039\n",
      "未定义处理函数 1039\n",
      "未定义处理函数 1039\n",
      "未定义处理函数 1039\n",
      "未定义处理函数 1039\n",
      "未定义处理函数 1040\n",
      "未定义处理函数 1040\n",
      "未定义处理函数 1040\n",
      "未定义处理函数 1040\n",
      "未定义处理函数 1040\n",
      "未定义处理函数 1040\n",
      "未定义处理函数 1041\n",
      "未定义处理函数 1041\n",
      "未定义处理函数 1041\n",
      "未定义处理函数 1041\n",
      "未定义处理函数 1041\n",
      "未定义处理函数 1041\n",
      "未定义处理函数 1042\n",
      "未定义处理函数 1042\n",
      "未定义处理函数 1042\n",
      "未定义处理函数 1042\n",
      "未定义处理函数 1042\n",
      "未定义处理函数 1042\n",
      "未定义处理函数 1043\n",
      "未定义处理函数 1043\n",
      "未定义处理函数 1043\n",
      "未定义处理函数 1043\n",
      "未定义处理函数 1043\n",
      "未定义处理函数 1043\n",
      "未定义处理函数 1044\n",
      "未定义处理函数 1044\n",
      "未定义处理函数 1044\n",
      "未定义处理函数 1044\n",
      "未定义处理函数 1044\n",
      "未定义处理函数 1044\n",
      "未定义处理函数 1045\n",
      "未定义处理函数 1045\n",
      "未定义处理函数 1045\n",
      "未定义处理函数 1045\n",
      "未定义处理函数 1045\n",
      "未定义处理函数 1045\n",
      "未定义处理函数 1046\n",
      "未定义处理函数 1046\n",
      "未定义处理函数 1046\n",
      "未定义处理函数 1046\n",
      "未定义处理函数 1046\n",
      "未定义处理函数 1046\n",
      "未定义处理函数 1047\n",
      "未定义处理函数 1047\n",
      "未定义处理函数 1047\n",
      "未定义处理函数 1047\n",
      "未定义处理函数 1047\n",
      "未定义处理函数 1047\n",
      "未定义处理函数 1048\n",
      "未定义处理函数 1048\n",
      "未定义处理函数 1048\n",
      "未定义处理函数 1048\n",
      "未定义处理函数 1048\n",
      "未定义处理函数 1048\n",
      "未定义处理函数 1049\n",
      "未定义处理函数 1049\n",
      "未定义处理函数 1049\n",
      "未定义处理函数 1049\n",
      "未定义处理函数 1049\n",
      "未定义处理函数 1049\n",
      "未定义处理函数 1050\n",
      "未定义处理函数 1050\n",
      "未定义处理函数 1050\n",
      "未定义处理函数 1050\n",
      "未定义处理函数 1050\n",
      "未定义处理函数 1050\n",
      "未定义处理函数 1051\n",
      "未定义处理函数 1051\n",
      "未定义处理函数 1051\n",
      "未定义处理函数 1051\n",
      "未定义处理函数 1051\n",
      "未定义处理函数 1051\n",
      "未定义处理函数 1052\n",
      "未定义处理函数 1052\n",
      "未定义处理函数 1052\n",
      "未定义处理函数 1052\n",
      "未定义处理函数 1052\n",
      "未定义处理函数 1052\n",
      "未定义处理函数 1053\n",
      "未定义处理函数 1053\n",
      "未定义处理函数 1053\n",
      "未定义处理函数 1053\n",
      "未定义处理函数 1053\n",
      "未定义处理函数 1053\n",
      "未定义处理函数 1054\n",
      "未定义处理函数 1054\n",
      "未定义处理函数 1054\n",
      "未定义处理函数 1054\n",
      "未定义处理函数 1054\n",
      "未定义处理函数 1054\n",
      "未定义处理函数 1055\n",
      "未定义处理函数 1055\n",
      "未定义处理函数 1055\n",
      "未定义处理函数 1055\n",
      "未定义处理函数 1055\n",
      "未定义处理函数 1055\n",
      "未定义处理函数 1056\n",
      "未定义处理函数 1056\n",
      "未定义处理函数 1056\n",
      "未定义处理函数 1056\n",
      "未定义处理函数 1056\n",
      "未定义处理函数 1056\n",
      "未定义处理函数 1057\n",
      "未定义处理函数 1057\n",
      "未定义处理函数 1057\n",
      "未定义处理函数 1057\n",
      "未定义处理函数 1057\n",
      "未定义处理函数 1057\n",
      "未定义处理函数 1058\n",
      "未定义处理函数 1058\n",
      "未定义处理函数 1058\n",
      "未定义处理函数 1058\n",
      "未定义处理函数 1058\n",
      "未定义处理函数 1058\n",
      "未定义处理函数 1059\n",
      "未定义处理函数 1059\n",
      "未定义处理函数 1059\n",
      "未定义处理函数 1059\n",
      "未定义处理函数 1059\n",
      "未定义处理函数 1059\n",
      "未定义处理函数 1060\n",
      "未定义处理函数 1060\n",
      "未定义处理函数 1060\n",
      "未定义处理函数 1060\n",
      "未定义处理函数 1060\n",
      "未定义处理函数 1060\n",
      "未定义处理函数 1061\n",
      "未定义处理函数 1061\n",
      "未定义处理函数 1061\n",
      "未定义处理函数 1061\n",
      "未定义处理函数 1061\n",
      "未定义处理函数 1061\n",
      "未定义处理函数 1062\n",
      "未定义处理函数 1062\n",
      "未定义处理函数 1062\n",
      "未定义处理函数 1062\n",
      "未定义处理函数 1062\n",
      "未定义处理函数 1062\n",
      "未定义处理函数 1063\n",
      "未定义处理函数 1063\n",
      "未定义处理函数 1063\n",
      "未定义处理函数 1063\n",
      "未定义处理函数 1063\n",
      "未定义处理函数 1063\n",
      "未定义处理函数 1064\n",
      "未定义处理函数 1064\n",
      "未定义处理函数 1064\n",
      "未定义处理函数 1064\n",
      "未定义处理函数 1064\n",
      "未定义处理函数 1064\n",
      "未定义处理函数 1065\n",
      "未定义处理函数 1065\n",
      "未定义处理函数 1065\n",
      "未定义处理函数 1065\n",
      "未定义处理函数 1065\n",
      "未定义处理函数 1065\n",
      "未定义处理函数 1066\n",
      "未定义处理函数 1066\n",
      "未定义处理函数 1066\n",
      "未定义处理函数 1066\n",
      "未定义处理函数 1066\n",
      "未定义处理函数 1066\n",
      "未定义处理函数 1067\n",
      "未定义处理函数 1067\n",
      "未定义处理函数 1067\n",
      "未定义处理函数 1067\n",
      "未定义处理函数 1067\n",
      "未定义处理函数 1067\n",
      "未定义处理函数 1068\n",
      "未定义处理函数 1068\n",
      "未定义处理函数 1068\n",
      "未定义处理函数 1068\n",
      "未定义处理函数 1068\n",
      "未定义处理函数 1068\n",
      "未定义处理函数 1069\n",
      "未定义处理函数 1069\n",
      "未定义处理函数 1069\n",
      "未定义处理函数 1069\n",
      "未定义处理函数 1069\n",
      "未定义处理函数 1069\n",
      "未定义处理函数 1070\n",
      "未定义处理函数 1070\n",
      "未定义处理函数 1070\n",
      "未定义处理函数 1070\n",
      "未定义处理函数 1070\n",
      "未定义处理函数 1070\n",
      "未定义处理函数 1071\n",
      "未定义处理函数 1071\n",
      "未定义处理函数 1071\n",
      "未定义处理函数 1071\n",
      "未定义处理函数 1071\n",
      "未定义处理函数 1071\n",
      "未定义处理函数 1072\n",
      "未定义处理函数 1072\n",
      "未定义处理函数 1072\n",
      "未定义处理函数 1072\n",
      "未定义处理函数 1072\n",
      "未定义处理函数 1072\n",
      "未定义处理函数 1073\n",
      "未定义处理函数 1073\n",
      "未定义处理函数 1073\n",
      "未定义处理函数 1073\n",
      "未定义处理函数 1073\n",
      "未定义处理函数 1073\n",
      "未定义处理函数 1074\n",
      "未定义处理函数 1074\n",
      "未定义处理函数 1074\n",
      "未定义处理函数 1074\n",
      "未定义处理函数 1074\n",
      "未定义处理函数 1074\n",
      "未定义处理函数 1075\n",
      "未定义处理函数 1075\n",
      "未定义处理函数 1075\n",
      "未定义处理函数 1075\n",
      "未定义处理函数 1075\n",
      "未定义处理函数 1075\n",
      "未定义处理函数 1076\n",
      "未定义处理函数 1076\n",
      "未定义处理函数 1076\n",
      "未定义处理函数 1076\n",
      "未定义处理函数 1076\n",
      "未定义处理函数 1076\n",
      "未定义处理函数 1077\n",
      "未定义处理函数 1077\n",
      "未定义处理函数 1077\n",
      "未定义处理函数 1077\n",
      "未定义处理函数 1077\n",
      "未定义处理函数 1078\n",
      "未定义处理函数 1078\n",
      "未定义处理函数 1078\n",
      "未定义处理函数 1078\n",
      "未定义处理函数 1078\n",
      "未定义处理函数 1078\n",
      "未定义处理函数 1079\n",
      "未定义处理函数 1079\n",
      "未定义处理函数 1079\n",
      "未定义处理函数 1079\n",
      "未定义处理函数 1079\n",
      "未定义处理函数 1079\n",
      "未定义处理函数 1080\n",
      "未定义处理函数 1080\n",
      "未定义处理函数 1080\n",
      "未定义处理函数 1080\n",
      "未定义处理函数 1080\n",
      "未定义处理函数 1080\n",
      "未定义处理函数 1081\n",
      "未定义处理函数 1081\n",
      "未定义处理函数 1081\n",
      "未定义处理函数 1081\n",
      "未定义处理函数 1081\n",
      "未定义处理函数 1081\n",
      "未定义处理函数 1082\n",
      "未定义处理函数 1082\n",
      "未定义处理函数 1082\n",
      "未定义处理函数 1082\n",
      "未定义处理函数 1082\n",
      "未定义处理函数 1082\n",
      "未定义处理函数 1083\n",
      "未定义处理函数 1083\n",
      "未定义处理函数 1083\n",
      "未定义处理函数 1083\n",
      "未定义处理函数 1083\n",
      "未定义处理函数 1083\n",
      "未定义处理函数 1084\n",
      "未定义处理函数 1084\n",
      "未定义处理函数 1084\n",
      "未定义处理函数 1084\n",
      "未定义处理函数 1084\n",
      "未定义处理函数 1084\n",
      "未定义处理函数 1085\n",
      "未定义处理函数 1085\n",
      "未定义处理函数 1085\n",
      "未定义处理函数 1085\n",
      "未定义处理函数 1085\n",
      "未定义处理函数 1085\n",
      "未定义处理函数 1086\n",
      "未定义处理函数 1086\n",
      "未定义处理函数 1086\n",
      "未定义处理函数 1086\n",
      "未定义处理函数 1086\n",
      "未定义处理函数 1086\n",
      "未定义处理函数 1087\n",
      "未定义处理函数 1087\n",
      "未定义处理函数 1087\n",
      "Error processing file D:\\学习&科研\\华为手表项目\\华为数据\\subject\\1087\\1087-1-1-singlework.txt: \"['活动.测量开始时间', '活动.测量结束时间'] not in index\"\n",
      "未定义处理函数 1087\n",
      "未定义处理函数 1087\n",
      "未定义处理函数 1088\n",
      "未定义处理函数 1088\n",
      "未定义处理函数 1088\n",
      "未定义处理函数 1088\n",
      "未定义处理函数 1088\n",
      "未定义处理函数 1088\n",
      "未定义处理函数 1089\n",
      "未定义处理函数 1089\n",
      "未定义处理函数 1089\n",
      "未定义处理函数 1089\n",
      "未定义处理函数 1089\n",
      "未定义处理函数 1089\n",
      "未定义处理函数 1090\n",
      "未定义处理函数 1090\n",
      "未定义处理函数 1090\n",
      "未定义处理函数 1090\n",
      "未定义处理函数 1090\n",
      "未定义处理函数 1090\n",
      "未定义处理函数 1091\n",
      "未定义处理函数 1091\n",
      "未定义处理函数 1091\n",
      "未定义处理函数 1091\n",
      "未定义处理函数 1091\n",
      "未定义处理函数 1091\n",
      "未定义处理函数 1092\n",
      "未定义处理函数 1092\n",
      "未定义处理函数 1092\n",
      "未定义处理函数 1092\n",
      "未定义处理函数 1092\n",
      "未定义处理函数 1092\n",
      "未定义处理函数 1093\n",
      "未定义处理函数 1093\n",
      "未定义处理函数 1093\n",
      "未定义处理函数 1093\n",
      "未定义处理函数 1093\n",
      "未定义处理函数 1093\n",
      "未定义处理函数 1094\n",
      "未定义处理函数 1094\n",
      "未定义处理函数 1094\n",
      "未定义处理函数 1094\n",
      "未定义处理函数 1094\n",
      "未定义处理函数 1094\n",
      "未定义处理函数 1095\n",
      "未定义处理函数 1095\n",
      "未定义处理函数 1095\n",
      "未定义处理函数 1095\n",
      "未定义处理函数 1095\n",
      "未定义处理函数 1095\n",
      "未定义处理函数 1096\n",
      "未定义处理函数 1096\n",
      "未定义处理函数 1096\n",
      "未定义处理函数 1096\n",
      "未定义处理函数 1096\n",
      "未定义处理函数 1096\n",
      "未定义处理函数 1097\n",
      "未定义处理函数 1097\n",
      "未定义处理函数 1097\n",
      "未定义处理函数 1097\n",
      "未定义处理函数 1097\n",
      "未定义处理函数 1097\n",
      "未定义处理函数 1098\n",
      "未定义处理函数 1098\n",
      "未定义处理函数 1098\n",
      "未定义处理函数 1098\n",
      "未定义处理函数 1098\n",
      "未定义处理函数 1098\n",
      "未定义处理函数 1099\n",
      "未定义处理函数 1099\n",
      "未定义处理函数 1099\n",
      "未定义处理函数 1099\n",
      "未定义处理函数 1099\n",
      "未定义处理函数 1099\n",
      "未定义处理函数 1100\n",
      "未定义处理函数 1100\n",
      "未定义处理函数 1100\n",
      "未定义处理函数 1100\n",
      "未定义处理函数 1100\n",
      "未定义处理函数 1100\n",
      "未定义处理函数 1101\n",
      "未定义处理函数 1101\n",
      "未定义处理函数 1102\n",
      "未定义处理函数 1102\n",
      "未定义处理函数 1102\n",
      "未定义处理函数 1102\n",
      "未定义处理函数 1102\n",
      "未定义处理函数 1102\n",
      "未定义处理函数 1103\n",
      "未定义处理函数 1103\n",
      "未定义处理函数 1103\n",
      "未定义处理函数 1103\n",
      "未定义处理函数 1103\n",
      "未定义处理函数 1103\n",
      "未定义处理函数 1104\n",
      "未定义处理函数 1104\n",
      "未定义处理函数 1104\n",
      "未定义处理函数 1104\n",
      "未定义处理函数 1104\n",
      "未定义处理函数 1104\n",
      "未定义处理函数 1105\n",
      "未定义处理函数 1105\n",
      "未定义处理函数 1105\n",
      "未定义处理函数 1105\n",
      "未定义处理函数 1105\n",
      "未定义处理函数 1105\n",
      "未定义处理函数 1106\n",
      "未定义处理函数 1106\n",
      "未定义处理函数 1106\n",
      "未定义处理函数 1106\n",
      "未定义处理函数 1106\n",
      "未定义处理函数 1106\n",
      "未定义处理函数 1107\n",
      "未定义处理函数 1107\n",
      "未定义处理函数 1107\n",
      "未定义处理函数 1107\n",
      "未定义处理函数 1107\n",
      "未定义处理函数 1107\n",
      "未定义处理函数 1108\n",
      "未定义处理函数 1108\n",
      "未定义处理函数 1108\n",
      "未定义处理函数 1108\n",
      "未定义处理函数 1108\n",
      "未定义处理函数 1108\n",
      "未定义处理函数 1109\n",
      "未定义处理函数 1109\n",
      "未定义处理函数 1109\n",
      "未定义处理函数 1109\n",
      "未定义处理函数 1109\n",
      "未定义处理函数 1109\n",
      "未定义处理函数 1110\n",
      "未定义处理函数 1110\n",
      "未定义处理函数 1110\n",
      "未定义处理函数 1110\n",
      "未定义处理函数 1110\n",
      "未定义处理函数 1110\n",
      "未定义处理函数 1111\n",
      "未定义处理函数 1111\n",
      "未定义处理函数 1111\n",
      "未定义处理函数 1111\n",
      "未定义处理函数 1111\n",
      "未定义处理函数 1111\n",
      "未定义处理函数 1112\n",
      "未定义处理函数 1112\n",
      "未定义处理函数 1112\n",
      "未定义处理函数 1112\n",
      "未定义处理函数 1112\n",
      "未定义处理函数 1112\n",
      "未定义处理函数 1113\n",
      "未定义处理函数 1113\n",
      "未定义处理函数 1114\n",
      "未定义处理函数 1114\n",
      "未定义处理函数 1114\n",
      "未定义处理函数 1114\n",
      "未定义处理函数 1114\n",
      "未定义处理函数 1114\n",
      "未定义处理函数 1115\n",
      "未定义处理函数 1115\n",
      "未定义处理函数 1115\n",
      "未定义处理函数 1115\n",
      "未定义处理函数 1115\n",
      "未定义处理函数 1115\n",
      "未定义处理函数 1116\n",
      "未定义处理函数 1116\n",
      "未定义处理函数 1116\n",
      "未定义处理函数 1116\n",
      "未定义处理函数 1116\n",
      "未定义处理函数 1116\n",
      "未定义处理函数 1117\n",
      "未定义处理函数 1117\n",
      "未定义处理函数 1117\n",
      "未定义处理函数 1117\n",
      "未定义处理函数 1117\n",
      "未定义处理函数 1117\n",
      "未定义处理函数 1118\n",
      "未定义处理函数 1118\n",
      "未定义处理函数 1118\n",
      "未定义处理函数 1118\n",
      "未定义处理函数 1118\n",
      "未定义处理函数 1118\n",
      "未定义处理函数 1119\n",
      "未定义处理函数 1119\n",
      "未定义处理函数 1119\n",
      "未定义处理函数 1119\n",
      "未定义处理函数 1119\n",
      "未定义处理函数 1119\n",
      "未定义处理函数 1120\n",
      "未定义处理函数 1120\n",
      "未定义处理函数 1120\n",
      "未定义处理函数 1120\n",
      "未定义处理函数 1120\n",
      "未定义处理函数 1120\n",
      "未定义处理函数 1121\n",
      "未定义处理函数 1121\n",
      "未定义处理函数 1121\n",
      "未定义处理函数 1121\n",
      "未定义处理函数 1121\n",
      "未定义处理函数 1121\n",
      "未定义处理函数 1122\n",
      "未定义处理函数 1122\n",
      "未定义处理函数 1122\n",
      "未定义处理函数 1122\n",
      "未定义处理函数 1122\n",
      "未定义处理函数 1122\n",
      "未定义处理函数 1123\n",
      "未定义处理函数 1123\n",
      "未定义处理函数 1123\n",
      "未定义处理函数 1123\n",
      "未定义处理函数 1123\n",
      "未定义处理函数 1123\n",
      "未定义处理函数 1124\n",
      "未定义处理函数 1124\n",
      "未定义处理函数 1124\n",
      "未定义处理函数 1124\n",
      "未定义处理函数 1124\n",
      "未定义处理函数 1124\n",
      "未定义处理函数 1125\n",
      "未定义处理函数 1125\n",
      "未定义处理函数 1125\n",
      "未定义处理函数 1125\n",
      "未定义处理函数 1125\n",
      "未定义处理函数 1125\n",
      "未定义处理函数 1126\n",
      "未定义处理函数 1126\n",
      "未定义处理函数 1126\n",
      "未定义处理函数 1126\n",
      "未定义处理函数 1127\n",
      "未定义处理函数 1127\n",
      "未定义处理函数 1127\n",
      "未定义处理函数 1127\n",
      "未定义处理函数 1127\n",
      "未定义处理函数 1127\n",
      "未定义处理函数 1128\n",
      "未定义处理函数 1128\n",
      "未定义处理函数 1128\n",
      "未定义处理函数 1128\n",
      "未定义处理函数 1128\n",
      "未定义处理函数 1128\n",
      "未定义处理函数 1129\n",
      "未定义处理函数 1129\n",
      "未定义处理函数 1129\n",
      "未定义处理函数 1129\n",
      "未定义处理函数 1129\n",
      "未定义处理函数 1129\n",
      "未定义处理函数 1130\n",
      "未定义处理函数 1130\n",
      "未定义处理函数 1130\n",
      "未定义处理函数 1130\n",
      "未定义处理函数 1130\n",
      "未定义处理函数 1130\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1033\n",
      "未定义处理函数 1135\n",
      "未定义处理函数 1135\n",
      "未定义处理函数 1135\n",
      "未定义处理函数 1135\n",
      "未定义处理函数 1135\n",
      "未定义处理函数 1135\n",
      "未定义处理函数 1131\n",
      "未定义处理函数 1131\n",
      "未定义处理函数 1131\n",
      "未定义处理函数 1131\n",
      "未定义处理函数 1131\n",
      "未定义处理函数 1131\n",
      "未定义处理函数 1132\n",
      "未定义处理函数 1132\n",
      "未定义处理函数 1132\n",
      "未定义处理函数 1132\n",
      "未定义处理函数 1132\n",
      "未定义处理函数 1132\n",
      "未定义处理函数 1134\n",
      "未定义处理函数 1134\n",
      "未定义处理函数 1134\n",
      "未定义处理函数 1134\n",
      "未定义处理函数 1134\n",
      "未定义处理函数 1134\n",
      "未定义处理函数 1136\n",
      "未定义处理函数 1136\n",
      "未定义处理函数 1136\n",
      "未定义处理函数 1136\n",
      "未定义处理函数 1136\n",
      "未定义处理函数 1136\n",
      "未定义处理函数 1137\n",
      "未定义处理函数 1137\n",
      "未定义处理函数 1137\n",
      "未定义处理函数 1137\n",
      "未定义处理函数 1137\n",
      "未定义处理函数 1137\n"
     ]
    }
   ],
   "source": [
    "#将文件进行转csv处理\n",
    "from data_deal.Problem_handling import handing_person\n",
    "from data_deal.merger import ecg_deal, rrdata_deal, ppg_deal, singledetail_deal, singlework_deal,rri_deal\n",
    "\n",
    "\n",
    "def deal_files(row):\n",
    "  \n",
    "    save_paths = []  # 用来存储所有类型的保存路径\n",
    "    \n",
    "    # 根据不同的类型选择相应的处理函数\n",
    "    def get_deal_function(type):\n",
    "        deal_functions = {\n",
    "            'ecg': ecg_deal,\n",
    "            'rrdata': rrdata_deal,\n",
    "            'ppg': ppg_deal,\n",
    "            'singledetail': singledetail_deal,\n",
    "            'singlework': singlework_deal,\n",
    "            'rri': rri_deal\n",
    "        }\n",
    "        return deal_functions.get(type)\n",
    "\n",
    "    def deal_pathto(type):\n",
    "        df = pd.DataFrame()\n",
    "        deal_function = get_deal_function(type)  # 获取相应的处理函数\n",
    "        save_path = None  # 如果没有处理文件，则默认为 None\n",
    "        \n",
    "        if deal_function:  # 如果处理函数存在\n",
    "            files = row[type]  # 获取文件列表\n",
    "            if isinstance(files, list):  # 确保是列表类型\n",
    "                for file in files:\n",
    "                    if isinstance(file, str):  # 确保文件是有效路径\n",
    "                        try:\n",
    "                            df = pd.concat([df, deal_function(file)], ignore_index=True)  # 根据类型调用处理函数\n",
    "                            \n",
    "                            number_path = os.path.join(deal_path, row['number'][0:4])  # 使用 os.path.join 拼接路径\n",
    "                            os.makedirs(number_path, exist_ok=True)  # 创建目录\n",
    "                            save_path = os.path.join(number_path, f\"{row['number']}-{type}.csv\")\n",
    "\n",
    "                            df.to_csv(save_path, index=False)  # 保存文件\n",
    "                            handing_person(row['number'][:4])#处理有问题数据\n",
    "                            break  # 一旦找到并保存文件就跳出循环\n",
    "                        except Exception as e:\n",
    "                            print(f\"Error processing file {file}: {e}\")\n",
    "            else:\n",
    "                print(f\"Expected a list for {type}, but got {type(files)} instead.\")\n",
    "        \n",
    "        return save_path  # 如果没有处理任何文件，返回 None\n",
    "\n",
    "    # 遍历所有类型并将路径添加到列表中\n",
    "    for type in typelist:\n",
    "        save_path = deal_pathto(type)  # 获取每个类型的保存路径\n",
    "        save_paths.append(save_path if save_path else None)  # 如果没有处理，添加 None\n",
    "\n",
    "    # 确保返回的路径列表长度与列数一致\n",
    "    return save_paths\n",
    "\n",
    "# 使用 tqdm 进度条\n",
    "tqdm.pandas(desc='deal')\n",
    "\n",
    "# 使用 `apply(pd.Series)` 将返回的列表展开为多个列\n",
    "files_record[['ecg_deal', 'rrdata_deal', 'singledetail_deal', 'singlework_deal', 'rri_deal', 'ppg_deal']] = files_record.progress_apply(deal_files, axis=1).apply(pd.Series)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "#保存文件路径表\n",
    "files_record.to_csv(r'D:\\学习&科研\\华为手表项目\\华为数据\\base_data\\files_record.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1bf5def70f884e288b5a9764d9316d39",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "add_stage:   0%|          | 0/138 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1032-1-1 'DataFrame' object has no attribute 'tolist'\n",
      "1032-1-1 'DataFrame' object has no attribute 'tolist'\n",
      "1033-1-1 'DataFrame' object has no attribute 'tolist'\n",
      "1113-1-1 Length mismatch: Expected axis has 0 elements, new values have 8 elements\n",
      "1115-1-1 Length mismatch: Expected axis has 0 elements, new values have 8 elements\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\崔伟\\AppData\\Local\\Temp\\ipykernel_13860\\941972158.py:8: DtypeWarning: Columns (2) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  df=stage_divide(row['number'],pd.read_csv(row['ecg_deal']))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1119-1-1 Length mismatch: Expected axis has 0 elements, new values have 8 elements\n",
      "1126-1-1 Invalid file path or buffer object type: <class 'NoneType'>\n",
      "1033-1-1 'DataFrame' object has no attribute 'tolist'\n",
      "1135-1-1 Length mismatch: Expected axis has 0 elements, new values have 8 elements\n",
      "1137-1-1 Length mismatch: Expected axis has 0 elements, new values have 8 elements\n"
     ]
    }
   ],
   "source": [
    "from  data_deal.function import  stage_divide\n",
    "#读取每个受试者的deal文件，区分阶段和阶段信息\n",
    "\n",
    "\n",
    "def add_stage(row):\n",
    "    df=pd.DataFrame()\n",
    "    try:\n",
    "        df=stage_divide(row['number'],pd.read_csv(row['ecg_deal']))\n",
    "\n",
    "        agg_test_record_df = test_record_df.groupby('number').agg({'sex': 'first'}).reset_index()\n",
    "        df['sex'] = df['number'].map(agg_test_record_df.set_index('number')['sex'])\n",
    "        \n",
    "        def assign_speed(row):\n",
    "            if row['state'] == 'running':\n",
    "                if row['sex'] == 0:\n",
    "                    speed = [4, 5.2, 6.4, 7.6, 8.8, 10, 11.2, 12.4, 13.6, 14.8, 16, 17.2, 18.4, 19.6, 20.8]\n",
    "                elif row['sex'] == 1:\n",
    "                    speed = [5, 6.2, 7.4, 8.6, 9.8, 11, 12.2, 13.4, 14.6, 15.8, 17, 18.2, 19.4, 20.6, 21.8]\n",
    "                # 如果 df 的行数小于 speed 列表的长度，选择前几项\n",
    "                return speed[row.name % len(speed)]  # 根据行号分配速度值\n",
    "            else:\n",
    "                return None\n",
    "        \n",
    "\n",
    "        def la(row):\n",
    "            if row['state'] == 'rest':\n",
    "                try:\n",
    "                    return test_record_df.set_index('number').at[row['number'], 'Resting']\n",
    "                except KeyError:\n",
    "                    # 如果找不到对应的 number，返回一个默认值，比如 NaN 或 0\n",
    "                    return float('nan')  \n",
    "            if row['state'] == 'running':\n",
    "            # 检查是否存在该 number\n",
    "                if row['number'] in test_record_df['number'].values:\n",
    "                    columns = [str(i) for i in range(1, 16)]  # 动态生成列名\n",
    "                    la = test_record_df.set_index('number').loc[row['number'], columns].tolist()\n",
    "                    # 确保 la 非空，避免索引或除零问题\n",
    "                    if la:\n",
    "                        return la[row.name % len(la)-2]\n",
    "            return None\n",
    "    \n",
    "    # 使用 apply 函数将 speed 列加入 df\n",
    "        df['speed'] = df.apply(assign_speed, axis=1)\n",
    "        df['la'] = df.apply(la, axis=1)\n",
    "    \n",
    "        return df\n",
    "    except Exception as e:\n",
    "        print(row['number'],e)\n",
    "\n",
    "        return df\n",
    "\n",
    "\n",
    "# 使用 tqdm 进度条\n",
    "tqdm.pandas(desc='add_stage')\n",
    "# 初始化一个空的DataFrame，用于存储所有用户的阶段数据\n",
    "all_stages_df = pd.DataFrame(columns=['number', 'stage', 'start_time', 'end_time', 'start_stamp', 'end_stamp', 'psychology_RPE', 'physiology_RPE', 'state'])\n",
    "# 使用progress_apply逐行处理并将每个用户的阶段信息合并到all_stages_df\n",
    "\n",
    "for result in files_record.progress_apply(add_stage, axis=1):\n",
    "    all_stages_df = pd.concat([all_stages_df, result], ignore_index=True)\n",
    "        \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ee3c77c1a6a048289d45c883612a4068",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "deal:   0%|          | 0/1451 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def hrandrr(row):\n",
    "    \n",
    "    hr_list, rr_list= [], []\n",
    "    try:\n",
    "        # 获取对应的 rrdata 文件路径\n",
    "        rrdata_path = files_record.set_index('number').at[row['number'], 'rrdata_deal']\n",
    "        rrdata_df = pd.read_csv(rrdata_path)\n",
    "        \n",
    "        # 解析 'rr' 列为列表\n",
    "        import ast\n",
    "        rrdata_df['rr'] = rrdata_df['rr'].apply(ast.literal_eval)\n",
    "        \n",
    "        # 根据时间戳筛选数据\n",
    "        start_time = row['start_stamp']\n",
    "        end_time = row['end_stamp']\n",
    "        stage_rrdata = rrdata_df[(rrdata_df['timestamp'] > start_time) & (rrdata_df['timestamp'] < end_time)]\n",
    "        \n",
    "        # 获取 HR 和 RR 数据\n",
    "        hr_list = stage_rrdata['HR'].astype(int).tolist()\n",
    "        rr_list = [int(item) for sublist in stage_rrdata['rr'] for item in sublist if item and item != '']\n",
    "        \n",
    "        # 返回结果为 pd.Series 格式，适合直接分配到两列\n",
    "        return pd.Series([hr_list, rr_list], index=['polar_hr', 'polar_rr'])\n",
    "    except:\n",
    "        return pd.Series([None, None], index=['polar_hr', 'polar_rr'])\n",
    "all_stages_df[['polar_hr', 'polar_rr']] = all_stages_df.progress_apply(hrandrr, axis=1)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "all_stages_df.to_csv(r'D:\\学习&科研\\华为手表项目\\华为数据\\base_data\\juypterall_stages_df.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "MLandDL",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.20"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
